package com.deliccio.service.impl;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.deliccio.dao.DetalleProductoDAO;
import com.deliccio.dao.ParametrosDAO;
import com.deliccio.dao.ProductoDAO;
import com.deliccio.entitys.DetalleProducto;
import com.deliccio.entitys.Parametros;
import com.deliccio.entitys.Producto;
import com.deliccio.service.MantenimientoAsignarProductosService;
import com.deliccio.service.MantenimientoProductosService;
import com.deliccio.util.Constantes;

@Service("MantenimientoAsignarProductosService")
public class MantenimientoAsignarProductosServiceImpl implements MantenimientoAsignarProductosService{

	@Autowired
	private ProductoDAO productoDAO;
	@Autowired
	private ParametrosDAO parametrosDAO;
	@Autowired
	private DetalleProductoDAO detalleProductoDAO;
	@Autowired
	private MantenimientoProductosService mantenimientoProductosService;
	
	@Override
	public List<Producto> obtenerProductoConjuntosActivos(){	
		 List<Producto> lst = productoDAO.obtenerProductosPorTipoConjunto(Constantes.CONJUNTOS);
		return lst;
	}


	@Override
	public List<Producto> obtenerProductosAsignados(int id){		
		return productoDAO.obtenerProductoAsignados(id);
	}


	@Override
	public List<Producto> obtenerProductosDisponibles(int id,String nombre,int tipo){
		List<Producto> lst=productoDAO.obtenerProductosDisponibles(id,nombre,tipo);
		return lst;
	}


	@Override
	public List<Parametros> obtenerConjuntos(){
		return mantenimientoProductosService.obtenerConjuntos();
	}


	@Override
	public List<Parametros> obtenerTiposProductos(){
		return parametrosDAO.obtenerTiposProductosIndividuales(Constantes.INDIVIDUALES);
	}


	@Override
	public int guardarAsignados(Producto producto,int[] idAsignado){
		if(idAsignado!=null){
			if(idAsignado.length>0){
				producto = productoDAO.obtener(producto.getId());							
				List<DetalleProducto> detalleProducto=detalleProductoDAO.obtenerDetallePorProducto(producto.getId());
				for(DetalleProducto dt : detalleProducto){
					dt=detalleProductoDAO.get(dt.getId());
					dt.setIdProductoConjunto(0);
					detalleProductoDAO.guardar(dt);	
				}				
				detalleProducto=new ArrayList<DetalleProducto>();
				for(int i=0;i < idAsignado.length;i++){
					Producto productDetalle = productoDAO.get(idAsignado[i]);
					DetalleProducto dp=new DetalleProducto(producto.getId(),productDetalle,1,0);
					detalleProducto.add(dp);
				}
				producto.setDetalleproductos(detalleProducto);
				productoDAO.guardar(producto);
				return 1;
			}
		}
		return 0;
	}

}
